其他

【新开源报道 44】5天GitHub fork超1.4万!欲取代CNNs的Hinton胶囊理论代码开源

2018-02-03 开源最前线

开源最前线(ID:OpenSourceTop) 猿妹 编译

编译自:https://hackernoon.com/capsule-networks-are-shaking-up-ai-heres-how-to-use-them-c233a0971952


如果你了解AI,你应该听说过Hinton胶囊。今天要告诉你的就是Hinton胶囊网络论文《Dynamic Routing between Capsules》的代码正式公布了,仅仅5天,Github上fork数量就超过了1.4万。



深度学习之父Geoffrey Hinton在10月份发表了备受瞩目的Capsule Networks(CapsNet)。在一次演讲中, Hinton还讨论了用“capsule”作为下一代CNN的理由。


那么,欲取代CNN的Capsule Network究竟是什么来头?CapsNet相比CNN有哪些优势?这位被誉为深度学习之父Geoffrey Hinto又是何许人也?不如一起和我深入了解一下。



杰弗里·辛顿(Geoffrey Hinton)被誉为“深度学习”之父。早在上世纪50年代,深度神经网络的概念就开始浮出水面,理论上已经可以解决大量的问题。然而,一直没有人能够弄清楚如何训练他们,人们开始放弃。但Hinton并没有放弃,并在1986年表明反向传播的想法可以训练这些深层网络。但却由于一直受限于当时的计算机运算能力,直到2012年,Hinton才得以突破,这一突破为这十年来人工智能的发展奠定了基础。


到了2017年10月26日,他又发布了一个新的开创性概念Capsule Networks的论文。(论文链接:https://arxiv.org/pdf/1710.09829v1.pdf


深度学习系统 Capsule


授权协议:Apache

开发语言:Python

操作系统:跨平台

GitHub地址:https://github.com/Sarasra/models/tree/master/research/capsules


Capsule  简介


CapsNet 是 Hinton 在论文中提出的一个胶囊网络最简单的结构,也就是一个虚拟神经元小组,用于解决传统 CNN 在对图片信息提取的信息遗漏问题和深度学习模型对物体形状记忆的问题。简而言之,CapsNet 统一了计算机视觉里面的分类、检测、分割所有的任务。




这个网络中最底层的多维度胶囊结构就展现出了不同的特性,它们起到的作用就像传统计算机图形渲染中的不同元素一样,每一个胶囊关注自己的一部分特征。这和目前的计算机视觉任务中,把图像中不同空间位置的元素组合起来形成整体理解(或者说图像中的每个区域都会首先激活整个网络然后再进行组合)具有截然不同的计算特性。在底层的胶囊之后连接了PrimaryCaps层和DigitCaps层。



传统神经网络中存在的问题


到目前为止,卷积神经网络(CNNs)一直是最先进的图像分类方法。


CNNs通过逐层累加调整实现分类。CNNs 是通过积累各层的特征集进行工作的。它的工作方式是首先从寻找边缘开始,然后是形状,继而是实际对象。但这种工作方式,把所有这些特征的空间关键信息都丢失了。下面是一个CNN工作原理的简化描述:


如果有两只眼睛,一只鼻子,一张嘴,那么这就是一张脸。



你可能会觉得,没错就是这样啊!而且事实也确实是这样,但是我们可能会碰到一些问题,我们可以拿卡戴珊的照片来试一下,看看会怎么样(PS:前方高能,可能引起不适):



你看,这照片里确实有两只眼睛,一个鼻子和一个嘴巴,但是我们一眼就可以看出不对劲。我们可以很轻易指出这个人的眼睛和鼻子是错的,这并不是一个正常人的五官 。然而,即便是一个训练有素的 CNN 也难以理解这个概念:



除了被错误的图像位置所误导的错误,CNN在不同方向查看图像时也很容易混淆,解决这个问题的办法之一就是对所有可能的角度进行大量的训练,但这显然需要很多时间,而且结果似乎适得其反,我们可以通过简单的翻转照片就可以看到其性能大幅度下降:



最后,卷积神经网络可能很容易受到白盒对抗攻击。这种攻击在对象上嵌入了一个秘密的图案,使其这张图片被错误识别。



胶囊网络的优势


胶囊网络的引入,使我们能够充分利用空间关系,使我们可以开始看到更多的东西:



你应该不难发现,用这个定义我们的神经网络,就不会像前面处理卡戴珊的照片那样容易地被愚弄。


这种新的架构在以下数据集上也可以获得更高的精度。这个数据集经过精心设计,是一个纯粹的形状识别任务,即使从不同的角度来看也能识别物体。它击败了最先进的CNN,将错误数量减少了45%。



CapsNet能够识别底层图像是在相同的类别(动物,人类,飞机,汽车,卡车)


此外,在他们最近的论文中,他们发现胶囊比卷积神经网络更能抵抗白盒子攻击。



培训CapsNet


要想使用胶囊网络,首先你得训练它——于是,我根据Hinton 的论文建立了一个Repo


以下指南将为你提供在MNIST数据集上训练的模型。(MNIST是手写数字的数据集,很适合用作测试机器学习算法的基准线)


复制Repo:



安装要求:



开始训练:



MNIST数据集是6万个训练图像。默认情况下,该模型将以128个批处理大小训练50个周期。一个周期是整个训练集的一个完整运行。由于批量大小是128,所以每个纪元大约有468个批处理。


注意:如果您没有GPU,培训可能需要很长时间。



进行推论


一旦我们的模型得到充分的培训,我们可以通过运行以下命令来测试它:



综上,可以看出胶囊网络确实实力强大,但现在他们仍然是处于婴儿期。在训练庞大的数据集时,依然会碰到各种问题需要解决,但我依然对胶囊网络的发展充满信心。


附重塑AI的胶囊网络论文解读:

https://v.qq.com/txp/iframe/player.html?vid=u0531kv8pw1&width=500&height=375&auto=0



●本文编号161,以后想阅读这篇文章直接输入161即可

●输入m获取文章目录

↓↓↓ 点击"阅读原文" 进入GitHub详情页 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存